package jmine.tec.purge.dao;

import java.util.List;

import jmine.tec.purge.domain.PurgeConfig;
import jmine.tec.purge.domain.PurgeRequest;

import org.hibernate.Criteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import bancosys.tec.persist.dao.BaseDAO;

/**
 * DAO de PurgeRequest.
 * 
 * @author Marcio Ribeiro (mmr)
 * @created Aug 8, 2011
 */
public class PurgeRequestDAO extends BaseDAO<PurgeRequest> {

    /**
     * @param cfg configuracao de expurgo.
     * @return a ultima requisição para a configuração passada ou null caso nao encontre.
     */
    public PurgeRequest findLastRequest(PurgeConfig cfg) {
        Criteria crit = createCriteria();
        crit.add(Restrictions.eq("cfgName", cfg.getName()));
        crit.addOrder(Order.desc("requestStartTime"));
        crit.setMaxResults(1);
        List rs = crit.list();
        if (rs == null || rs.isEmpty()) {
            return null;
        }
        return (PurgeRequest) rs.get(0);
    }

    /**
     * @param cfg configuracao de expurgo.
     * @return lista de requisicoes para a configuracao passada, ordenados por hora de inicio.
     */
    public List<PurgeRequest> findByPurgeConfig(PurgeConfig cfg) {
        Criteria crit = createCriteria();
        crit.add(Restrictions.eq("cfgName", cfg.getName()));
        crit.addOrder(Order.desc("requestStartTime"));
        return executeQuery(crit);
    }
}
